// 本地环境
// var BASE_URL = "http://192.168.1.7:18028";
// var WSS_BASE_URL = "ws://192.168.1.7:18028";
// 线上环境
var BASE_URL = "https://www.baiheyz.com/qssmartsealservice";
var WSS_BASE_URL = "wss://www.baiheyz.com/qssmartsealservice";
var requestPath = {
  wxLogin : "/user/wxlogin",
  register : "/user/register",
  userPhoneNumber:"/user/get_phone",
  userInfo : "/user/info",
  userInfoById:"/user/infobyid",
  userInfoByCompany:"/user/info/by/company",
  userDetailInfo:"/user/detailinfo",
  userUpdate:"/user/update",
  userDecode : "/user/decode",
  userSync : "/user/sync",

  companyCreate:"/company/create",
  companyDefault:"/company/default",
  companyResource:"/company/resource",
  companyDepartmentResource:"/company/department/resource",
  companyDepartmentAdd:"/company/department/add",
  companyInfo:"/company/info",
  companyDetail:"/company/detail",
  companyDetailName:"/company/detail/name",
  companyDepartmentUpdate:"/company/department/update",
  companyDepartmentRemove:"/company/department/remove",
  companyUserAdd:"/company/user/add",
  companyAllUserList:"/company/alluserlist",
  companyAddAdmin:"/company/add/admin",
  companyRemoveAdmin:"/company/admin/remove",
  companyMyList:"/company/mylist",
  companySwitch:"/company/switch",
  companyUserMoveUp:"/company/user/moveup",
  companyUserMoveDown:"/company/user/movedown",
  companyUpdateUserAlias:"/company/update/user/alias",
  companyUserRemove:"/company/user/remove",
  companyAlarmRecordList:"/company/alarmrecordlist",
  companyContractTypeList:"/company/contracttypelist",
  companySubcontractTypelist:"/company/subcontracttypelist",
  companyAddContractType:"/company/addcontracttype",
  companyDeletecontracttype:"/company/deletecontracttype",
  companyTransfer:"/company/transfer",
  companyQuit:"/company/quit",
  companyRemove:"/company/remove",
  companyJoin:"/company/join2",
  companyAdminSealList:"/company/admin/seal/list",
  companyAdminSealUpdate:"/company/admin/seal/update",
  companyAdminFunctionList:"/company/admin/function/list",
  companyAdminFunctionUpdate:"/company/admin/function/update",
  companyHasAuth:"/company/has/auth",
  companyAuth:"/company/auth",
  companyUpdateAuthStatus:"/company/auth/update",
  companyChange:"/company/change",

  sealList:"/seal/list",
  sealList2:"/seal/list2",
  sealApplyList:"/seal/apply/list",
  sealMyList:"/seal/my/list",
  sealInfo:"/seal/info",
  sealInfoByMac:"/seal/infobymac",
  sealAdd:"/seal/add",
  sealReplace:"/seal/replace",
  sealUpdateName:"/seal/update/name",
  sealUpdateForcePhotograph:"/seal/update/forcephotograph",
  sealUpdateFacePhoto:"/seal/update/face/photo",
  sealUpdateDepartment:"/seal/update/department",
  sealUpdateStatus:"/seal/update/status",
  sealRemove:"/seal/remove2",
  sealUploadAlarm:"/seal/upload/alarm",
  sealFingerprintList:"/seal/fingerprint/list",
  sealRegisterFingerprint:"/seal/register/fingerprint",
  sealModifyFingerprint:"/seal/modify/fingerprint",
  sealRemoveFingerprint:"/seal/remove/fingerprint",

  applyAdd:"/apply/add",
  applyInfo:"/apply/info",
  applyContractTypeList:"/apply/contracttypelist",
  applyCompanyContractList:"/apply/company/contract/list",
  applyAvailableList:"/apply/available/list",
  applyMyList:"/apply/my/list",
  applyApprovalList:"/apply/approval/list",
  applyCCList:"/apply/cc/list",
  applyReplace:"/apply/replace",
  applyRevoke:"/apply/revoke",
  applyApproval:"/apply/approval",
  applyClose:"/apply/close",
  applyDetail:"/apply/detail",
  applyExport:"/apply/export",
  applyHasMyApproval:"/apply/hasmyapproval",

  electronicFenceList:"/electronicfence/list",
  electronicFenceListBySeal:"/electronicfence/list/by/seal",
  electronicFenceAdd:"/electronicfence/add",
  electronicFenceDelete:"/electronicfence/delete",

  costRechargePackageList:"/cost/rechargepackagelist",
  costRechargeRecordListByCompany:"/cost/rechargerecordlist/company",
  costRechargeRecordDetailList:"/cost/rechargerecorddetaillist",

  approvalProcessList:"/approvalprocess/list",
  approvalProcessListBySealId:"/approvalprocess/listbyseal",
  approvalProcessAdd:"/approvalprocess/add",
  approvalProcessSet:"/approvalprocess/set",
  approvalProcessUpdate:"/approvalprocess/update",
  approvalProcessDelete:"/approvalprocess/delete",
  approvalprocessDetail:"/approvalprocess/detail",
  applyApprovalProcessDetail:"/approvalprocess/apply",

  stampStart:"/stamp/start",
  stampPress:"/stamp/press",
  stampPressStorage:"/stamp/press/storage",
  stampRecordImageList:"/stamp/image/list",
  removeStampRecordImage:"/stamp/image/remove",
  stampUploadImages:"/stamp/upload/images",
  stampRecord:"/stamp/record",
  stampRecordSingle:"/stamp/record/single",
  stampRecordDetail:"/stamp/record/detail",
  stampRecordExport:"/stamp/record/export",
  stampFingerprinUpload:"/stamp/fingerprint/upload",
  stampFingerprintRecord:"/stamp/fingerprint/record",

  statisticsCalculate:"/statistics/calculate",
  statisticsReport:"/statistics/report",

  costOrder:"/cost/order",
  costQuery:"/cost/query",

  systemDeviceSingle:"/system/device/single",

  feedbackSave:"/feedback/save",

  uploadImage:"/file/uploadimage",

  agentStoreLogin:'/agent/store/login',
  agentStoreCheckDevice:'/agent/store/check/device',
  agentStoreRegister:'/agent/store/register',
  agentStoreDeliveryRecordList:'/agent/store/delivery/record/list',
  agentStoreDeliveryRecordExport:'/agent/store/delivery/record/export'
};

/**
 * 请求成功回调
 * 
 * @param {Function} suc  成功回调函数
 * @param {JSON} response 响应数据
 */
var successCallback = function(suc,response){
  wx.hideLoading();
  if(response.statusCode != 200){
    wx.showToast({
      title: '服务器繁忙！',
      icon:"error",
      mask:true,
      duration:2000
    })
    return;
  }
  if(response.data.code && response.data.code !=1){
    wx.showToast({
      title: response.data.msg,
      icon:"none",
      mask:true,
      duration:2000
    })
    return;
  }
  // 回调
  suc(response);
}
/**
 * 请求失败回调
 * 
 * @param {Object} e 
 */
var failCallBack = function(e){
  wx.hideLoading({
    success: (res) => {},
  })
  wx.showToast({
    title: '网络异常!',
    icon:"none",
    mask:true,
    duration:2000
  })
}
// 封装请求客户端类
class ZYRequestClient{
  /**
   * 获取微信用户openid和session_key
   * 
   * @param {String} code 登录代码
   * @param {Function} suc 成功回调函数
   */
  getOpenIdAndSessionKey(code,suc){
    wx.showLoading({
      title: '授权中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.wxLogin + '?code=' + code,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 注册用户信息
   * 
   * @param {JSON} userData 用户信息
   * @param {Function} suc 成功回调函数
   * @param {Function} fail 失败回调函数
   */
  register(userData,suc,fail){
    wx.showLoading({
      title: '登录中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.register,
      method:'POST',
      data:userData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:fail
    })
  }
  /**
   * 获取微信用户手机号码
   * @param {String} code 登录代码
   * @param {Function} suc 成功回调函数
   */
  getUserPhoneNumber(code,suc){
    wx.request({
      url: BASE_URL + requestPath.userPhoneNumber + '?code=' + code,
      method:'GET',
      dataType:'json',
      dataType:'json',
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 获取用户信息
   * 
   * @param {String} openId 微信开放id
   * @param {Function} suc 成功回调函数
   */
  getUserInfo(openId,suc){
    wx.request({
      url: BASE_URL + requestPath.userInfo + '?openId=' + openId,
      method:'GET',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户信息
   * 
   * @param {Long} id 用户id
   * @param {Function} suc 成功回调函数
   */
  getUserInfoById(id,suc){
    wx.request({
      url: BASE_URL + requestPath.userInfoById + '?id=' + id,
      method:'GET',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司用户信息
   * @param {Long} id 用户id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getUserInfoByCompany(userId,companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.userInfoByCompany + '?userId=' + userId + '&companyId=' + companyId,
      method:'GET',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户详细信息
   * 
   * @param {Long} id 用户id
   * @param {Function} suc 成功回调函数
   */
  getUserDetailInfoById(id,suc){
    wx.request({
      url: BASE_URL + requestPath.userDetailInfo + '?id=' + id,
      method:'GET',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 更新用户信息
   * 
   * @param {JSON} userData 用户信息
   * @param {Function} suc 成功回调函数
   */
  updateUserInfo(userData,suc){
    wx.showLoading({
      title: '修改中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.userUpdate,
      method:'POST',
      data:userData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 解密用户手机号码
   * 
   * @param {JSON} data 加密的数据对象
   * @param {Function} suc 成功回调函数
   */
  decodeUserPhone(data,suc){
    wx.showLoading({
      title: '绑定中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.userDecode,
      method:'POST',
      data:data,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 同步用户信息
   * 
   * @param {JSON} userData 用户信息
   * @param {Function} suc 成功回调函数
   * @param {Function} fail 失败回调函数
   */
  syncUserInfo(userData,suc,fail){
    wx.showLoading({
      title: '更新中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.userSync,
      method:'POST',
      data:userData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:fail
    })
  }
  /**
   * 创建公司
   * 
   * @param {JSON} companyData 公司信息
   * @param {Function} suc 成功回调函数
   */
  createCompany(companyData,suc){
    wx.showLoading({
      title: '创建中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companyCreate,
      method:'POST',
      data:companyData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司信息
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyInfo(companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyInfo + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司详情
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyDetail(companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDetail + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
   /**
   * 获取公司详情
   * @param {String} companyName 公司名称
   * @param {Function} suc 成功回调函数
   */
  getCompanyDetailByNameSingle(companyName,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDetailName + '?companyName=' + companyName,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户默认公司
   * 
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getUserDefaultCompany(userId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDefault + "?userId=" + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        if(res.data.data){
          // 存储用户默认公司
          wx.setStorageSync('defaultCompany', res.data.data);
        }
        
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司一级部门和人员
   * 
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyResource(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companyResource + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取部门下的子部门和人员
   * 
   * @param {Long} departmentId 部门id
   * @param {Function} suc 成功回调函数
   */
  getDepartmentResource(departmentId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companyDepartmentResource + '?departmentId=' + departmentId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加部门
   * 
   * @param {JSON} companyDepartmentData 部门信息
   * @param {Function} suc 成功回调函数
   */
  addCompanyDepartment(companyDepartmentData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDepartmentAdd,
      method:'POST',
      data:companyDepartmentData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 更新部门名称
   * 
   * @param {String} name 名称
   * @param {Long} id 部门id
   * @param {Function} suc 成功回调函数
   */
  updateDepartmentName(name,id,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDepartmentUpdate + "?name=" + name + "&id=" + id,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 解散部门
   * @param {Long} id 部门id
   * @param {Function} suc 成功回调函数
   */
  removeDepartment(id,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDepartmentRemove + "?id=" + id,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司下所有用户
   * @param {Long} companyId 公司id
   * @param {Function} suc 
   */
  getAllUserList(companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyAllUserList + '?companyId=' +companyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加公司人员
   * 
   * @param {JSON} companyUserData 人员信息
   * @param {Function} suc 成功回调函数
   */
  addCompanyUser(companyUserData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyUserAdd,
      method:'POST',
      data:companyUserData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 移动到上级部门
   * @param {JSON} moveUser 
   * @param {Function} suc 成功回调函数
   */
  moveUpCompanyUser(moveUser,suc){
    wx.request({
      url: BASE_URL + requestPath.companyUserMoveUp,
      method:'POST',
      data:moveUser,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 移动到下级部门
   * @param {JSON} moveUser 
   * @param {Function} suc 成功回调函数
   */
  moveDownCompanyUser(moveUser,suc){
    wx.request({
      url: BASE_URL + requestPath.companyUserMoveDown,
      method:'POST',
      data:moveUser,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 修改公司人员别名
   * @param {userId} userId 用户id
   * @param {companyId} companyId 公司id
   * @param {userAlias} userAlias 别名
   * @param {Function} suc 成功回调函数
   */
  updateUserAlias(userId,companyId,userAlias,suc){
    wx.request({
      url: BASE_URL + requestPath.companyUpdateUserAlias + '?userId=' + userId + '&companyId=' + companyId + '&userAlias=' + userAlias,
      method:'GET',
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取我的公司列表
   * 
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getMyCompanyList(userId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.companyMyList + '?userId=' +userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 切换公司
   * @param {Long} userId 用户id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  switchCompany(userId,companyId,suc){
    wx.showLoading({
      title: '切换中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.companySwitch + '?userId=' +userId + "&companyId=" + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 移除公司用户
   * @param {Long} userId 用户id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  removeUser(userId,companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyUserRemove + '?userId=' +userId + "&companyId=" + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取报警记录
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyAlarmRecordList(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companyAlarmRecordList +'?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取合同大类列表
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyContractTypeList(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companyContractTypeList +'?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取合同小类
   * @param {Long} id 合同类型id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanySubContractTypeList(id,companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.companySubcontractTypelist +'?id=' + id + '&companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加合同类型
   * @param {JSON} contractData 合同信息
   * @param {Function} suc 成功回调函数
   */
  addCompanyContractType(contractData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyAddContractType,
      method:"POST",
      data:contractData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 删除合同类型
   * @param {Long} id 合同类型id
   * @param {Function} suc 成功回调函数
   */
  deleteCompanyContractType(id,suc){
    wx.request({
      url: BASE_URL + requestPath.companyDeletecontracttype +'?id=' + id,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 转让公司
   * @param {Long} companyId 公司id
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  transferCompany(companyId,userId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyTransfer +'?companyId=' + companyId + '&userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 退出公司
   * @param {Long} companyId 公司id
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  quitCompany(companyId,userId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyQuit+'?companyId=' + companyId + '&userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 解散公司
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  removeCompany(companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.companyRemove +'?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 加入公司
   * @param {Long} companyId 公司id
   * @param {Long} userId 用户id
   * @param {String} nickName 用户备注
   * @param {Function} suc 成功回调函数
   */
  joinCompany(companyId,userId,nickName,suc){
    wx.request({
      url: BASE_URL + requestPath.companyJoin +'?companyId=' + companyId + '&userId=' + userId + '&nickName=' + nickName,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加管理员
   * @param {JSON} adminData 管理员信息
   * @param {Function} suc 成功回调函数
   */
  addAdminUser(adminData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyAddAdmin,
      method:'POST',
      data:adminData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 移除管理员
   * @param {Long} userId 用户id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  removeAdminUser(userId,companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyRemoveAdmin + '?companyId=' + companyId + '&userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取管理员印章权限
   * @param {Long} companyId 公司id
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getAdminSealList(userId,companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyAdminSealList + '?companyId=' + companyId + '&userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 更新管理员印章权限
   * @param {JSON} adminSealData 管理员印章信息
   * @param {Function} suc 成功回调函数
   */
  updateAdminSeal(adminSealData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyAdminSealUpdate,
      method:'POST',
      data:adminSealData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取管理员功能权限
   * @param {Long} companyId 公司id
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getAdminFunctionList(userId,companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyAdminFunctionList + '?companyId=' + companyId + '&userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
    /**
   * 更新管理员功能权限
   * @param {JSON} adminFunctionData 管理员功能信息
   * @param {Function} suc 成功回调函数
   */
  updateAdminFunction(adminFunctionData,suc){
    wx.request({
      url: BASE_URL + requestPath.companyAdminFunctionUpdate,
      method:'POST',
      data:adminFunctionData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取认证公司
   * @param {String} name 公司名称
   * @param {Function} suc 成功回调函数
   */
  getAuthCompany(name,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyHasAuth + '?name=' + name,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 认证公司
   * @param {String} name 公司名称
   * @param {Fucntion} suc 成功回调函数
   */
  authCompany(name,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyAuth + '?name=' + name,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 更新企业认证状态
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  updateCompanyAuthStatus(companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyUpdateAuthStatus + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 变更主体
   * @param {Long} companyId 公司id
   * @param {String} name 新的主体名称
   * @param {Function} suc 成功回调函数
   */
  changeCompany(companyId,name,suc){
    wx.request({
      url: BASE_URL +  requestPath.companyChange + '?companyId=' + companyId + '&name=' + name,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司印章列表
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getSealList(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.sealList + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
   /**
   * 获取公司印章列表
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getSealList2(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.sealList2 + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
   /**
   * 获取我关联的印章列表
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getSealMyList(userId,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealMyList + '?userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取可申请的印章列表
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getSealApplyList(userId,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealApplyList + '?userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取印章信息
   * @param {Long} id 印章id
   * @param {Function} suc 成功回调函数
   */
  getSealInfo(id,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealInfo + '?id=' + id,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取印章信息
   * @param {String} mac 印章mac地址
   * @param {Function} suc 成功回调函数
   */
  getSealInfoByMac(mac,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealInfoByMac + '?mac=' + mac,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加印章
   * @param {JSON} sealData 印章信息
   * @param {Function} suc 成功回调函数
   */
  addSeal(sealData,suc){
    wx.request({
      url: BASE_URL + requestPath.sealAdd,
      method:"POST",
      data:sealData,
      dataType:"json",
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 替换印章
   * @param {JSON} replaceData 替换信息
   * @param {Function} suc 成功回调函数
   */
  replaceSeal(replaceData,suc){
    wx.request({
      url: BASE_URL + requestPath.sealReplace,
      method:"POST",
      data:replaceData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
   /**
   * 更新印章名称
   * @param {Long} sealId 印章id
   * @param {String} name 印章名称
   * @param {Function} suc 成功回调函数
   */
  updateSealName(sealId,name,suc){
    wx.request({
      url: BASE_URL + requestPath.sealUpdateName + '?sealId=' + sealId + "&name=" + name,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 更新盖章后是否强制拍照
   * @param {Long} sealId 印章id
   * @param {Boolean} forcePhotograph 状态值
   * @param {Function} suc 成功回调函数
   */
  updateSealForcePhotograph(sealId,forcePhotograph,suc){
    wx.request({
      url: BASE_URL + requestPath.sealUpdateForcePhotograph + '?sealId=' + sealId + "&forcePhotograph=" + forcePhotograph,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 更新盖章前是否强制确认用印人
   * @param {Long} sealId 印章id
   * @param {Boolean} facePhoto 状态值
   * @param {Function} suc 成功回调函数
   */
  updateSealFacePhoto(sealId,facePhoto,suc){
    wx.request({
      url: BASE_URL + requestPath.sealUpdateFacePhoto + '?sealId=' + sealId + "&facePhoto=" + facePhoto,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 更新印章所在部门
   * @param {Long} sealId 印章id
   * @param {Long} departmentId 部门id
   * @param {Function} suc 成功回调函数
   */
  updateSealDepartment(sealId,departmentId,suc){
    wx.request({
      url: BASE_URL + requestPath.sealUpdateDepartment + '?sealId=' + sealId + "&departmentId=" + departmentId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 更新印章状态
   * @param {Long} sealId 印章id
   * @param {Integer} status 状态值
   * @param {Function} suc 成功回调函数
   */
  updateSealStatus(sealId,status,suc){
    wx.request({
      url: BASE_URL + requestPath.sealUpdateStatus + '?sealId=' + sealId + "&status=" + status,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 删除印章
   * @param {Long} userId 用户id
   * @param {Long} sealId 印章id
   * @param {Function} suc 成功回调函数
   */
  removeSeal(userId,sealId,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealRemove + '?userId=' + userId + '&sealId=' + sealId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 上传盖章报警
   * @param {JSON} alarmRecordData 报警数据
   * @param {Function} suc 成功回调函数 
   * @param {Function} fail 失败回调函数
   */
  uploadAlarmRecord(alarmRecordData,suc,fail){
    wx.request({
      url: BASE_URL +  requestPath.sealUploadAlarm,
      method:"POST",
      data:alarmRecordData,
      dataType:"json",
      success:suc,
      fail:fail
    })
  }
  /**
   * 获取印章指纹用户
   * @param {Long} companyId 公司id
   * @param {Long} sealId 印章id
   * @param {Function} suc 失败回调函数
   */
  getSealFingerprintList(companyId,sealId,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealFingerprintList + '?companyId=' + companyId + '&sealId=' + sealId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 注册指纹
   * @param {*} fingerprintData 指纹用户数据
   * @param {Function} suc 失败回调函数 
   */
  registerFingerprint(fingerprintData,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealRegisterFingerprint,
      method:"POST",
      data:fingerprintData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 修改指纹权限
   * @param {*} fingerprintData 指纹用户数据
   * @param {Function} suc 失败回调函数
   */
  modifyFingerprint(fingerprintData,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealModifyFingerprint,
      method:"POST",
      data:fingerprintData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 删除指纹
   * @param {*} id 数据id
   * @param {*} deleteUser 删除人
   * @param {Function} suc 失败回调函数
   */
  removeFingerprintList(id,deleteUser,suc){
    wx.request({
      url: BASE_URL +  requestPath.sealRemoveFingerprint + '?id=' + id + '&deleteUser=' + deleteUser,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加申请单
   * @param {JSON} applyData 申请单信息
   * @param {Function} suc 成功回调函数
   */
  addUseSealApply(applyData,suc){
    wx.request({
      url: BASE_URL + requestPath.applyAdd,
      method:"POST",
      data:applyData,
      dataType:"json",
      success:function(res){
        successCallback(suc,res)
      },
      fail:failCallBack
    })
  }
  /**
   * 获取单据信息
   * @param applyId 单据id
   * @param {Function} suc 成功回调函数
   */
  getApplyInfo(applyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.applyInfo + "?applyId=" + applyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取合同类型
   * @param {Function} suc 成功回调函数
   */
  getContractTypeList(suc){
    wx.request({
      url: BASE_URL +  requestPath.applyContractTypeList,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取合同类型
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getCompanyContractList(companyId,suc){
    wx.request({
      url: BASE_URL +  requestPath.applyCompanyContractList + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户可用的申请单
   * @param {Long} userId 用户id
   * @param {Function} suc 成功回调函数
   */
  getApplyAvailableList(userId,suc){
    wx.request({
      url: BASE_URL +  requestPath.applyAvailableList + '?userId=' + userId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取我提交的申请单
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getMyApplyList(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.applyMyList,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取我审批的申请单
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getMyApprovalApplyList(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.applyApprovalList,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取抄送我的申请单
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getMyCCApplyList(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.applyCCList,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 代替用印申请单
   * @param {Long} applyId 申请单id
   * @param {Long} userId 用户id 
   * @param {Function} suc 成功回调函数 
   */
  replaceApply(applyId,userId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyReplace + '?applyId=' + applyId + '&userId=' + userId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 撤销申请单
   * @param {Long} applyId 申请单id
   * @param {Function} suc 成功回调函数 
   */
  revokeApply(applyId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyRevoke +  '?applyId=' + applyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
    /**
   * 关闭申请单
   * @param {Long} applyId 申请单id
   * @param {Function} suc 成功回调函数 
   */
  closeApply(applyId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyClose +  '?applyId=' + applyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 审批申请单
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  approvalApply(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.applyApproval,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取申请单详情
   * @param {Long} applyId 申请单id
   * @param {Function} suc 成功回调函数
   */
  getApplyDetail(applyId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyDetail + '?applyId=' + applyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 导出单据信息
   * @param {JSON} applyId 单据id
   * @param {Function} suc 成功回调函数
   */
  exportApply(applyId,suc){
    var responseType = "arraybuffer";
    wx.request({
      url: BASE_URL + requestPath.applyExport + '?applyId=' + applyId,
      method:'GET',
      responseType: responseType,
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取是否有待我审批的申请单
   * @param {Long} userId 
   * @param {Function} suc 成功回调函数
   */
  getHasMyApproval(userId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyHasMyApproval + '?userId=' + userId,
      method:'GET',
      dataType:'json',
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 获取公司电子围栏列表
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getElectronicFenceList(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.electronicFenceList +'?companyId=' + companyId,
      method:'GET',
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取印章电子围栏列表
   * @param {Long} sealId 印章id
   * @param {Function} suc 成功回调函数
   */
  getElectronicFenceListBySeal(sealId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.electronicFenceListBySeal +'?sealId=' + sealId,
      method:'GET',
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加电子围栏
   * @param {JSON} electronicFenceData 电子围栏信息
   * @param {Function} suc 成功回调函数
   */
  addElectronicFence(electronicFenceData,suc){
    wx.request({
      url: BASE_URL+requestPath.electronicFenceAdd,
      method:'POST',
      data:electronicFenceData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 删除电子围栏
   * @param {Long} electronicFenceId 电子围栏id
   * @param {Function} suc 成功回调函数
   */
  deleteElectronicFence(electronicFenceId,suc){
    wx.request({
      url: BASE_URL + requestPath.electronicFenceDelete +'?electronicFenceId=' + electronicFenceId,
      method:'GET',
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取充值套餐列表
   * @param {Function} suc 成功回调函数
   */
  getRechargePackageList(suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.costRechargePackageList,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户充值记录
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getRechargeRecordListByCompany(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.costRechargeRecordListByCompany + '?companyId=' + companyId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用户充值记录详情
   * @param {Long} recordId 记录id
   * @param {Function} suc 成功回调函数
   */
  getRechargeRecordDetailList(recordId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL +  requestPath.costRechargeRecordDetailList + '?recordId=' + recordId,
      method:"GET",
      dataType:"json",
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 添加审批流
   * @param {JSON} approvalProcessData 审批流信息
   * @param {Function} suc 成功回调函数
   */
  addApprovalProcess(approvalProcessData,suc){
    wx.request({
      url: BASE_URL+requestPath.approvalProcessAdd,
      method:'POST',
      data:approvalProcessData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 设置审批流
   * @param {JSON} approvalProcessData 审批流信息
   * @param {Function} suc 成功回调函数
   */
  setApprovalProcess(approvalProcessData,suc){
    wx.request({
      url: BASE_URL+requestPath.approvalProcessSet,
      method:'POST',
      data:approvalProcessData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取公司审批流列表
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getApprovalProcessList(companyId,suc){
    wx.showLoading({
      title: '加载中...',
      mask:true
    });
    wx.request({
      url: BASE_URL + requestPath.approvalProcessList + "?companyId=" + companyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
   /**
   * 获取印章审批流列表
   * @param {Long} sealId 印章id
   * @param {Function} suc 成功回调函数
   */
  getApprovalProcessListBySealId(sealId,suc){
    wx.request({
      url: BASE_URL + requestPath.approvalProcessListBySealId + "?sealId=" + sealId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 更新审批流
   * @param {JSON} approvalData 
   * @param {Function} suc 成功回调函数
   */
  updateApprovalProcess(approvalData,suc){
    wx.request({
      url: BASE_URL+requestPath.approvalProcessUpdate,
      method:'POST',
      data:approvalData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 删除审批流
   * @param {Long} processId 审批流id
   * @param {Function} suc 成功回调函数
   */
  deleteApprovalProcess(processId,suc){
    wx.request({
      url: BASE_URL+requestPath.approvalProcessDelete + '?processId=' + processId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取审批流详情
   * @param {Long} processId 审批流id
   * @param {Function} suc 成功回调函数
   */
  getApprovalProcessDetail(processId,suc){
    wx.request({
      url: BASE_URL + requestPath.approvalprocessDetail + '?processId=' + processId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取用印申请审批流
   * @param {Long} sealId 印章id
   * @param {Long} userId 用户id
   * @param {Long} companyId 公司id
   * @param {Function} suc 成功回调函数
   */
  getApplyApprovalProcessDetail(sealId,userId,companyId,suc){
    wx.request({
      url: BASE_URL + requestPath.applyApprovalProcessDetail + '?sealId=' + sealId + '&userId=' + userId + '&companyId=' + companyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 启动印章
   * @param {JSON} startData 启动数据
   * @param {Function} suc 成功回调函数
   * @param {Function} fail 失败回调函数
   */
  startStamp(startData,suc,fail){
    wx.request({
      url: BASE_URL + requestPath.stampStart,
      method:'POST',
      data:startData,
      dataType:'json',
      success:suc,
      fail:fail
    })
  }
  /**
   * 按压盖章
   * @param {JSON} stampData 盖章数据
   * @param {Function} suc 成功回调函数
   * @param {Function} fail 失败回调函数
   */
  pressStamp(stampData,suc,fail){
    wx.request({
      url: BASE_URL + requestPath.stampPress,
      method:'POST',
      data:stampData,
      dataType:'json',
      success:suc,
      fail:fail
    })
  }
    /**
   * 上传离线盖章
   * @param {JSON} stampData 盖章数据
   * @param {Function} suc 成功回调函数
   * @param {Function} fail 失败回调函数
   */
  storageStamp(stampData,suc,fail){
    wx.request({
      url: BASE_URL + requestPath.stampPressStorage,
      method:'POST',
      data:stampData,
      dataType:'json',
      success:suc,
      fail:fail
    })
  }
  /**
   * 获取单据盖章拍照图片
   */
  getStampImages(applyId,suc){
    wx.request({
      url: BASE_URL + requestPath.stampRecordImageList + '?applyId=' + applyId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 删除单据盖章拍照图片
   */
  removeStampImage(imageUrl,suc){
    wx.request({
      url: BASE_URL + requestPath.removeStampRecordImage + '?imageUrl=' + imageUrl,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 上传盖章后拍照的图片地址
   */
  uploadStampImages(stampImagesData,suc){
    wx.request({
      url: BASE_URL + requestPath.stampUploadImages,
      method:'POST',
      data:stampImagesData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取盖章记录
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getStampRecord(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.stampRecord,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取单条盖章记录
   * @param {Long} stampRecordId 记录id
   * @param {Function} suc 成功回调函数
   */
  getStampRecordSingle(stampRecordId,suc){
    wx.request({
      url: BASE_URL + requestPath.stampRecordSingle + '?stampRecordId=' + stampRecordId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 获取盖章记录详情
   * @param {Long} stampRecordId 记录id
   * @param {Function} suc 成功回调函数
   */
  getStampRecordDetail(stampRecordId,suc){
    wx.request({
      url: BASE_URL + requestPath.stampRecordDetail + '?stampRecordId=' + stampRecordId,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 导出盖章记录
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  exportStampRecord(paramsData,suc){
    var responseType = "arraybuffer";
    if(paramsData.exportType > 0){
      responseType = "text";
    }
    wx.request({
      url: BASE_URL + requestPath.stampRecordExport,
      method:'POST',
      data:paramsData,
      responseType: responseType,
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 上传指纹盖章记录
   * @param {JSON} stampData 盖章数据
   * @param {Function} suc 成功回调函数
   */
  uploadFingerprintStamp(stampData,suc){
    wx.request({
      url: BASE_URL + requestPath.stampFingerprinUpload,
      method:'POST',
      data:stampData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 查询指纹盖章记录
   * @param {String} mac 设备mac地址
   * @param {Integer} code 指纹代码
   * @param {Function} suc 成功回调函数
   */
  getFingerprintRecord(mac,code,suc){
    wx.request({
      url: BASE_URL + requestPath.stampFingerprintRecord + "?mac=" + mac + "&code=" + code,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 统计
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getStatisticsData(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.statisticsCalculate,
      method:'POST',
      data:paramsData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 导出统计报表
   * @param {JSON} paramsData 参数信息
   * @param {Function} suc 成功回调函数
   */
  getStatisticsReport(paramsData,suc){
    wx.request({
      url: BASE_URL + requestPath.statisticsReport,
      method:'POST',
      data:paramsData,
      responseType: 'arraybuffer',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 充值印章
   * @param {JSON} orderData 订单数据
   * @param {Function} suc 成功回调函数
   */
  rechargeSeal(orderData,suc){
    wx.request({
      url: BASE_URL + requestPath.costOrder,
      method:'POST',
      data:orderData,
      dataType:'json',
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 查询订单
   * @param {String} orderNumber 
   * @param {Function} suc 成功回调函数
   */
  queryOrder(orderNumber,suc){
    wx.request({
      url: BASE_URL + requestPath.costQuery + '?tradeNo=' + orderNumber,
      method:'GET',
      dataType:'json',
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 获取接入设备
   * @param {String} mac 设备MAC地址
   * @param {Function} suc 成功回调函数
   */
  getAccessDevice(mac,suc){
    wx.request({
      url: BASE_URL + requestPath.systemDeviceSingle + '?mac=' + mac,
      method:'GET',
      dataType:'json',
      success:suc,
      fail:failCallBack
    })
  }
  /**
   * 意见反馈
   * @param {JSON} feedbackData 反馈信息
   * @param {Function} suc 成功回调函数
   */
  saveFeedback(feedbackData,suc){
    wx.request({
      url: BASE_URL+requestPath.feedbackSave,
      method:'POST',
      data:feedbackData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 上传图片
   * @param {Long} userId 用户id
   * @param {String} filePath 文件对象 
   * @param {Function} suc 成功回调函数
   */
  uploadImage(userId,filePath,suc){
    wx.uploadFile({
      filePath: filePath,
      name: 'file',
      url: BASE_URL + requestPath.uploadImage + "?userId=" +userId,
      header: {
        'content-type': 'multipart/form-data'
      },
      success:function(res){
        suc(res);
      },
      fail(e){
        
      }
    })
  }
  /**
   * 检查功能权限
   * @param {Integer} code 功能代码
   * @param {String} message 无权限的消息提示文本
   * @param {Function} suc 有权限执行的函数
   * @param {Function} fail 无权限执行的函数
   */
  checkFunctionPermission(code,message,suc,fail){
    var userInfo = wx.getStorageSync('userInfo');
    if(userInfo == ''){
      if(message){
        wx.showModal({
          title:'没有权限',
          content:message,
          showCancel:false,
          success(res){
            if(fail){
              fail();
            }
          }
        })
      } else {
        if(fail){
          fail();
        }
      }
      return;
    }
    this.getUserDefaultCompany(userInfo.id,function(res){
      var defaultCompany = res.data.data;
      var hasPermission = false;
      if(userInfo.id == defaultCompany.belongUser){
        hasPermission = true;
      } else {
        var functionList = defaultCompany.adminFunctionList;
        for(var i = 0; i < functionList.length; i++){
          var fun = functionList[i];
          if(code == fun.code){
            hasPermission = fun.enableFlag;
            break;
          }
        }
      }
      if(hasPermission){
        suc();
      } else {
        if(message){
          wx.showModal({
            title:'没有权限',
            content:message,
            showCancel:false,
            success(res){
              if(fail){
                fail();
              }
            }
          })
        } else {
          if(fail){
            fail();
          }
        }
      }
    });
  }
  /**
   * 检查印章权限
   * @param {Long} sealId 印章id
   */
  checkAdminSealPermission(sealId){
    var userInfo = wx.getStorageSync('userInfo');
    var defaultCompany = wx.getStorageSync('defaultCompany')
    var hasPermission = false;
    if(userInfo.id == defaultCompany.belongUser){
      hasPermission = true;
    } else {
      var sealList = defaultCompany.adminSealList;
      for(var i = 0; i < sealList.length; i++){
        var seal = sealList[i];
        if(sealId == seal.sealId){
          hasPermission = seal.enableFlag;
          break;
        }
      }
    }

    return hasPermission;
  }
  /**
   * 检查超级管理员权限
   */
  checkSuperAdmin(){
    var userInfo = wx.getStorageSync('userInfo');
    var defaultCompany = wx.getStorageSync('defaultCompany')
    var hasPermission = false;
    if(userInfo.id == defaultCompany.belongUser){
      hasPermission = true;
    }
    return hasPermission;
  }
  /**
   * 创建WebSocket连接
   */
  connectSocket(){
    var userInfo = wx.getStorageSync('userInfo');
    if(userInfo){
       return wx.connectSocket({
            url: WSS_BASE_URL + "/websocket?userId=" + userInfo.id,
          });
    }
    
    return null;
  }
  /**
   * 代理商门店登录
   * @param {String} phone 电话
   * @param {String} pwd 密码
   * @param {Function} suc 成功回调函数
   */
  agentStoreLogin(phone,pwd,suc){
    wx.request({
      url: BASE_URL + requestPath.agentStoreLogin + '?phone=' + phone + '&pwd=' + pwd,
      method:'GET',
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 代理商门店设备校验
   * @param {JSON} checkData 校验对象
   * @param {Function} suc 成功回调函数
   */
  agentStoreCheckDevice(checkData,suc){
    wx.request({
      url: BASE_URL + requestPath.agentStoreCheckDevice,
      method:'POST',
      data:checkData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 代理商门店出货登记
   * @param {JSON} registerData 登记的设备对象
   * @param {Function} suc 成功回调函数
   */
  agentStoreRegister(registerData,suc){
    wx.request({
      url: BASE_URL + requestPath.agentStoreRegister,
      method:'POST',
      data:registerData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 代理商门店查询出货记录
   * @param {JSON} searchData 查询条件对象
   * @param {Function} suc 成功回调函数
   */
  agentStoreDeliverRecordList(searchData,suc){
    wx.request({
      url: BASE_URL + requestPath.agentStoreDeliveryRecordList,
      method:'POST',
      data:searchData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
  /**
   * 导出代理商门店查询出货记录
   * @param {JSON} searchData 查询条件对象
   * @param {Function} suc 成功回调函数
   */
  agentStoreDeliverRecordExport(searchData,suc){
    wx.request({
      url: BASE_URL + requestPath.agentStoreDeliveryRecordExport,
      method:'POST',
      data:searchData,
      dataType:'json',
      success:function(res){
        successCallback(suc,res);
      },
      fail:failCallBack
    })
  }
}
module.exports = ZYRequestClient;